package com.spark.spiservice.service;

import com.spark.spiapi.SpiInterface;

import java.util.ServiceLoader;

/**
 * @author fuqiang
 * @Description spi实现类 , 不需要加@service注解注入容器,
 * 使用spi机制可以直接利用反射生成对象
 * @Date 2021-03-24
 */
public class SpiServiceImpl implements SpiInterface {
    @Override
    public String testSpi() {
        System.out.println("testSpi 调用成功");
        return "调用成功";
    }
    /**
     * 实例化 SpiServiceImpl
     * @author fuqiang
     * @date 2021-03-24 15:38
     * @return com.spark.spiapi.SpiInterface
     */
    public static SpiInterface getCicadaBeanFactory() {
        ServiceLoader<SpiInterface> spiInterfaces = ServiceLoader.load(SpiInterface.class);
        if (spiInterfaces.iterator().hasNext()){
            return spiInterfaces.iterator().next() ;
        }

        return null;
    }

}
